// Generated from E:\sol2bpel\grammar\SOL_Declarative.g4 by ANTLR 4.2
package qu.sol2bpel.sol.grammar;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.misc.*;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class SOL_DeclarativeLexer extends Lexer {
	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		PARTY=1, DATATYPE=2, SIMPLE_DATATYPE=3, VECTOR_DATATYPE=4, MATRIX_DATATYPE=5, 
		INPUT_KEYWORD=6, OUTPUT_KEYWORD=7, PROTOCOL_KEYWORD=8, DENY_KEYWORD=9, 
		FUNCTION_KEYWORD=10, VERIFICATION_KEYWORD=11, ID=12, INT=13, COLON=14, 
		LB=15, RB=16, COMMA=17, UNDER_SCORE=18, WS=19, NEWLINE=20;
	public static String[] modeNames = {
		"DEFAULT_MODE"
	};

	public static final String[] tokenNames = {
		"<INVALID>",
		"PARTY", "DATATYPE", "SIMPLE_DATATYPE", "VECTOR_DATATYPE", "MATRIX_DATATYPE", 
		"INPUT_KEYWORD", "OUTPUT_KEYWORD", "PROTOCOL_KEYWORD", "DENY_KEYWORD", 
		"FUNCTION_KEYWORD", "'Verification'", "ID", "INT", "':'", "'('", "')'", 
		"','", "'_'", "WS", "NEWLINE"
	};
	public static final String[] ruleNames = {
		"PARTY", "DATATYPE", "SIMPLE_DATATYPE", "VECTOR_DATATYPE", "MATRIX_DATATYPE", 
		"INPUT_KEYWORD", "OUTPUT_KEYWORD", "PROTOCOL_KEYWORD", "DENY_KEYWORD", 
		"FUNCTION_KEYWORD", "VERIFICATION_KEYWORD", "ID", "INT", "COLON", "LB", 
		"RB", "COMMA", "UNDER_SCORE", "WS", "NEWLINE"
	};


	public SOL_DeclarativeLexer(CharStream input) {
		super(input);
		_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	@Override
	public String getGrammarFileName() { return "SOL_Declarative.g4"; }

	@Override
	public String[] getTokenNames() { return tokenNames; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public String[] getModeNames() { return modeNames; }

	@Override
	public ATN getATN() { return _ATN; }

	@Override
	public void action(RuleContext _localctx, int ruleIndex, int actionIndex) {
		switch (ruleIndex) {
		case 18: WS_action((RuleContext)_localctx, actionIndex); break;
		}
	}
	private void WS_action(RuleContext _localctx, int actionIndex) {
		switch (actionIndex) {
		case 0: skip(); break;
		}
	}

	public static final String _serializedATN =
		"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2\26\u0104\b\1\4\2"+
		"\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+
		"\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+
		"\t\22\4\23\t\23\4\24\t\24\4\25\t\25\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3"+
		"\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\5\2B\n\2\3\3\3"+
		"\3\3\3\5\3G\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3"+
		"\4\5\4W\n\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3"+
		"\5\3\5\3\5\3\5\3\5\3\5\5\5m\n\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3"+
		"\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\5\6\u0083\n\6\3\7\3\7\3\7\3"+
		"\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7\u008f\n\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
		"\b\3\b\3\b\3\b\3\b\5\b\u009d\n\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3"+
		"\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u00af\n\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+
		"\n\5\n\u00b9\n\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13"+
		"\3\13\3\13\3\13\3\13\3\13\5\13\u00cb\n\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f"+
		"\3\f\3\f\3\f\3\f\3\f\3\f\3\r\6\r\u00db\n\r\r\r\16\r\u00dc\3\r\3\r\7\r"+
		"\u00e1\n\r\f\r\16\r\u00e4\13\r\6\r\u00e6\n\r\r\r\16\r\u00e7\3\16\6\16"+
		"\u00eb\n\16\r\16\16\16\u00ec\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22\3"+
		"\23\3\23\3\24\6\24\u00fa\n\24\r\24\16\24\u00fb\3\24\3\24\3\25\5\25\u0101"+
		"\n\25\3\25\3\25\2\2\26\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27"+
		"\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26\3\2\4\4\2C\\c|\4\2\13"+
		"\13\"\"\u011b\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2"+
		"\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2"+
		"\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2"+
		"\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\3A\3\2\2\2\5F\3\2\2"+
		"\2\7V\3\2\2\2\tl\3\2\2\2\13\u0082\3\2\2\2\r\u008e\3\2\2\2\17\u009c\3\2"+
		"\2\2\21\u00ae\3\2\2\2\23\u00b8\3\2\2\2\25\u00ca\3\2\2\2\27\u00cc\3\2\2"+
		"\2\31\u00e5\3\2\2\2\33\u00ea\3\2\2\2\35\u00ee\3\2\2\2\37\u00f0\3\2\2\2"+
		"!\u00f2\3\2\2\2#\u00f4\3\2\2\2%\u00f6\3\2\2\2\'\u00f9\3\2\2\2)\u0100\3"+
		"\2\2\2+,\7E\2\2,-\7n\2\2-.\7k\2\2./\7g\2\2/\60\7p\2\2\60B\7v\2\2\61\62"+
		"\7e\2\2\62\63\7n\2\2\63\64\7k\2\2\64\65\7g\2\2\65\66\7p\2\2\66B\7v\2\2"+
		"\678\7E\2\289\7n\2\29:\7q\2\2:;\7w\2\2;B\7f\2\2<=\7e\2\2=>\7n\2\2>?\7"+
		"q\2\2?@\7w\2\2@B\7f\2\2A+\3\2\2\2A\61\3\2\2\2A\67\3\2\2\2A<\3\2\2\2B\4"+
		"\3\2\2\2CG\5\7\4\2DG\5\t\5\2EG\5\13\6\2FC\3\2\2\2FD\3\2\2\2FE\3\2\2\2"+
		"G\6\3\2\2\2HI\7X\2\2IJ\7c\2\2JW\7n\2\2KL\7J\2\2LM\7X\2\2MN\7c\2\2NW\7"+
		"n\2\2OP\7I\2\2PQ\7X\2\2QR\7c\2\2RW\7n\2\2ST\7k\2\2TU\7p\2\2UW\7v\2\2V"+
		"H\3\2\2\2VK\3\2\2\2VO\3\2\2\2VS\3\2\2\2W\b\3\2\2\2XY\7X\2\2YZ\7g\2\2Z"+
		"[\7e\2\2[\\\7v\2\2\\]\7q\2\2]m\7t\2\2^_\7J\2\2_`\7X\2\2`a\7g\2\2ab\7e"+
		"\2\2bc\7v\2\2cd\7q\2\2dm\7t\2\2ef\7I\2\2fg\7X\2\2gh\7g\2\2hi\7e\2\2ij"+
		"\7v\2\2jk\7q\2\2km\7t\2\2lX\3\2\2\2l^\3\2\2\2le\3\2\2\2m\n\3\2\2\2no\7"+
		"O\2\2op\7c\2\2pq\7v\2\2qr\7t\2\2rs\7k\2\2s\u0083\7z\2\2tu\7J\2\2uv\7O"+
		"\2\2vw\7c\2\2wx\7v\2\2xy\7t\2\2yz\7k\2\2z\u0083\7z\2\2{|\7I\2\2|}\7O\2"+
		"\2}~\7c\2\2~\177\7v\2\2\177\u0080\7t\2\2\u0080\u0081\7k\2\2\u0081\u0083"+
		"\7z\2\2\u0082n\3\2\2\2\u0082t\3\2\2\2\u0082{\3\2\2\2\u0083\f\3\2\2\2\u0084"+
		"\u0085\7K\2\2\u0085\u0086\7p\2\2\u0086\u0087\7r\2\2\u0087\u0088\7w\2\2"+
		"\u0088\u008f\7v\2\2\u0089\u008a\7k\2\2\u008a\u008b\7p\2\2\u008b\u008c"+
		"\7r\2\2\u008c\u008d\7w\2\2\u008d\u008f\7v\2\2\u008e\u0084\3\2\2\2\u008e"+
		"\u0089\3\2\2\2\u008f\16\3\2\2\2\u0090\u0091\7Q\2\2\u0091\u0092\7w\2\2"+
		"\u0092\u0093\7v\2\2\u0093\u0094\7r\2\2\u0094\u0095\7w\2\2\u0095\u009d"+
		"\7v\2\2\u0096\u0097\7q\2\2\u0097\u0098\7w\2\2\u0098\u0099\7v\2\2\u0099"+
		"\u009a\7r\2\2\u009a\u009b\7w\2\2\u009b\u009d\7v\2\2\u009c\u0090\3\2\2"+
		"\2\u009c\u0096\3\2\2\2\u009d\20\3\2\2\2\u009e\u009f\7R\2\2\u009f\u00a0"+
		"\7t\2\2\u00a0\u00a1\7q\2\2\u00a1\u00a2\7v\2\2\u00a2\u00a3\7q\2\2\u00a3"+
		"\u00a4\7e\2\2\u00a4\u00a5\7q\2\2\u00a5\u00af\7n\2\2\u00a6\u00a7\7r\2\2"+
		"\u00a7\u00a8\7t\2\2\u00a8\u00a9\7q\2\2\u00a9\u00aa\7v\2\2\u00aa\u00ab"+
		"\7q\2\2\u00ab\u00ac\7e\2\2\u00ac\u00ad\7q\2\2\u00ad\u00af\7n\2\2\u00ae"+
		"\u009e\3\2\2\2\u00ae\u00a6\3\2\2\2\u00af\22\3\2\2\2\u00b0\u00b1\7F\2\2"+
		"\u00b1\u00b2\7g\2\2\u00b2\u00b3\7p\2\2\u00b3\u00b9\7{\2\2\u00b4\u00b5"+
		"\7f\2\2\u00b5\u00b6\7g\2\2\u00b6\u00b7\7p\2\2\u00b7\u00b9\7{\2\2\u00b8"+
		"\u00b0\3\2\2\2\u00b8\u00b4\3\2\2\2\u00b9\24\3\2\2\2\u00ba\u00bb\7H\2\2"+
		"\u00bb\u00bc\7w\2\2\u00bc\u00bd\7p\2\2\u00bd\u00be\7e\2\2\u00be\u00bf"+
		"\7v\2\2\u00bf\u00c0\7k\2\2\u00c0\u00c1\7q\2\2\u00c1\u00cb\7p\2\2\u00c2"+
		"\u00c3\7h\2\2\u00c3\u00c4\7w\2\2\u00c4\u00c5\7p\2\2\u00c5\u00c6\7e\2\2"+
		"\u00c6\u00c7\7v\2\2\u00c7\u00c8\7k\2\2\u00c8\u00c9\7q\2\2\u00c9\u00cb"+
		"\7p\2\2\u00ca\u00ba\3\2\2\2\u00ca\u00c2\3\2\2\2\u00cb\26\3\2\2\2\u00cc"+
		"\u00cd\7X\2\2\u00cd\u00ce\7g\2\2\u00ce\u00cf\7t\2\2\u00cf\u00d0\7k\2\2"+
		"\u00d0\u00d1\7h\2\2\u00d1\u00d2\7k\2\2\u00d2\u00d3\7e\2\2\u00d3\u00d4"+
		"\7c\2\2\u00d4\u00d5\7v\2\2\u00d5\u00d6\7k\2\2\u00d6\u00d7\7q\2\2\u00d7"+
		"\u00d8\7p\2\2\u00d8\30\3\2\2\2\u00d9\u00db\t\2\2\2\u00da\u00d9\3\2\2\2"+
		"\u00db\u00dc\3\2\2\2\u00dc\u00da\3\2\2\2\u00dc\u00dd\3\2\2\2\u00dd\u00e2"+
		"\3\2\2\2\u00de\u00e1\5\33\16\2\u00df\u00e1\5%\23\2\u00e0\u00de\3\2\2\2"+
		"\u00e0\u00df\3\2\2\2\u00e1\u00e4\3\2\2\2\u00e2\u00e0\3\2\2\2\u00e2\u00e3"+
		"\3\2\2\2\u00e3\u00e6\3\2\2\2\u00e4\u00e2\3\2\2\2\u00e5\u00da\3\2\2\2\u00e6"+
		"\u00e7\3\2\2\2\u00e7\u00e5\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\32\3\2\2"+
		"\2\u00e9\u00eb\4\62;\2\u00ea\u00e9\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec\u00ea"+
		"\3\2\2\2\u00ec\u00ed\3\2\2\2\u00ed\34\3\2\2\2\u00ee\u00ef\7<\2\2\u00ef"+
		"\36\3\2\2\2\u00f0\u00f1\7*\2\2\u00f1 \3\2\2\2\u00f2\u00f3\7+\2\2\u00f3"+
		"\"\3\2\2\2\u00f4\u00f5\7.\2\2\u00f5$\3\2\2\2\u00f6\u00f7\7a\2\2\u00f7"+
		"&\3\2\2\2\u00f8\u00fa\t\3\2\2\u00f9\u00f8\3\2\2\2\u00fa\u00fb\3\2\2\2"+
		"\u00fb\u00f9\3\2\2\2\u00fb\u00fc\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fd\u00fe"+
		"\b\24\2\2\u00fe(\3\2\2\2\u00ff\u0101\7\17\2\2\u0100\u00ff\3\2\2\2\u0100"+
		"\u0101\3\2\2\2\u0101\u0102\3\2\2\2\u0102\u0103\7\f\2\2\u0103*\3\2\2\2"+
		"\24\2AFVl\u0082\u008e\u009c\u00ae\u00b8\u00ca\u00dc\u00e0\u00e2\u00e7"+
		"\u00ec\u00fb\u0100\3\3\24\2";
	public static final ATN _ATN =
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}